#define _CRT_SECURE_NO_WARNINGS 1

#pragma once

#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30

#define DEFAULT_SZ 3
#define ADD_SZ 2

#include<string.h>

#include<stdio.h>

#include<assert.h>

#include<stdlib.h>


//类型的声明

enum Option
{
	Exit,//0
	Add,//1
	Del,//2
	Search,//3
	Modify,//4
	Show,//5
	Sort,//6
	Clear//7

};

typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}PeoInfo;

//通讯录
////静态版本
//typedef struct contact
//{
//	PeoInfo data[MAX];
//	int sz;
//}Contact;

//动态版本
//通讯录容量可以更改，不够时进行增加
typedef struct contact
{
	PeoInfo* data;//指向存放数据的空间
	int sz;//当前放的有效元素的个数
	int capacity;//通讯录当前最大容量
}Contact;



//函数声明
//初始化通讯录函数
void InitContact(Contact* pc);

//增加联系人信息
void AddContact(Contact* pc);

//显示所有联系人的信息
void ShowContact(const Contact* pc);

//删除指定联系人
void DelContact(Contact* pc);

//查找指定联系人
void SearchContact(const Contact* pc);

//修改联系人
void ModifyContact(Contact* pc);

//排序联系人
void SortContact(Contact* pc);


//清空联系人
void ClearContact(Contact* pc);

//释放通讯录的空间
void DestroyContact(Contact* pc);